#include <stdio.h>
#include <string.h>

#define N 100
#define SWAP(a, b) do { \
    typeof(a) temp = a; \
    a = b; \
    b = temp; \
} while(0)

void reverse_string(char str[]);

int main(void) 
{
    char str[N]; // 定义一个字符数组用于存储输入的字符串

    printf("请输入一行字符串：");
    fgets(str, sizeof(str), stdin); // 使用 fgets 读取一行字符串，防止缓冲区溢出

    str[strcspn(str, "\n")] = '\0'; // 去掉字符串末尾的换行符（如果有的话）

    reverse_string(str); // 调用 reverse_string 函数进行倒序

    printf("倒序后的字符串：%s\n", str);

    return 0;
}

/* 定义一个函数，将字符串倒序 */
void reverse_string(char str[])
{
    int length = strlen(str); // 获取字符串的长度
    int start = 0, end = length - 1;

    while (start < end) {
        SWAP(str[start], str[end]); // 交换字符串两端的字符
        start++;
        end--;
    }
}
